MacOS 10.11.6 Android源码编译并刷机

前言

Mac OS之前是10.14版本,Xcode也是最新的Xcode 10,与官文要求的编译环境相差很大,导致编译过程中出现各种奇葩错误,无力解决,遂重装系统。好在Mac OS重装系统很方便,在线安装即可。所以,安装10.11版本,目前编译Android6.0.1源码无问题。

环境

  • Mac OS :10.11.6 OS X EI Capitan
  • JDK:jdk7
  • Xcode:离线安装的Xcode 7.1 以及对应的Command Line Tool(官方下载安装
  • MacPorts

创建分区

mac系统默认是不区分大小写的。

1
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 150g ~/android.dmg

这将创建一个.dmg.sparseimage文件,该文件在装载后可用作具有 Android 开发所需格式的驱动盘。
若发现大小不足,可以重新修改

1
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage

在~/.bash_profile添加两个方法

1
2
3
4
# mount the android file image
mountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
# unmount the android file image
umountAndroid() { hdiutil detach /Volumes/android; }

环境准备

JDK安装

Xcode7.1/Command Line Tool安装(官方下载安装

下载时注意和系统10.11配套的Xcode,以及和Xcode版本对应的Command Line Tool
Xcode Tool

MacPorts

从macports.org 下载安装,请确保 /opt/local/bin 在路径中显示在 /usr/bin 前面。否则,请将以下内容添加到环境变量配置文件(~/.bash_profile)中:

1
export PATH=/opt/local/bin:$PATH

通过 MacPorts 获取 Make、Git 、 GPG、BISON 软件包

1
POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg bison

设置文件描述符数量上限

在 Mac OS 中,可同时打开的文件描述符的默认数量上限太低,在高度并行的编译流程中,可能会超出此上限。要提高此上限,在~/.bash_profile下添加

1
2
# set the number of open files to be 1024
ulimit -S -n 1024

下载

国内采用清华源,国外自便

Repo

~目录下新建bin目录,进入后下载repo

1
2
3
4
mkdir bin
cd bin
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo

/bin目录加入PATH,/.bash_profile添加

1
export PATH="~/bin:$PATH"

repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bash_profile里

1
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

下载源码

1
2
3
4
5
cd /Volumes/android
mkdir aosp
cd aosp
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r1
repo sync

编译

清理

1
make clobber

设置环境

1
source build/envsetup.sh

选择编译对象

1
lunch

lunch命令

如果是运行模拟器,选择1即可,如果是编译刷机,根据具体机型选择编译对象。

执行编译

1
make -j8

-jN 表示编译并行任务数,这个示电脑情况而定,一般取cpu数的1~2倍就可以

编译AOSP 8.0.0_r17并刷机

环境变化

jdk7换成 jdk8
为了方便jdk版本切换,在.bash_profile中添加如下内容

1
2
3
4
5
6
7
export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home

export JAVA_HOME=$JAVA_8_HOME

alias jdk8='export JAVA_HOME=$JAVA_8_HOME'
alias jdk7='export JAVA_HOME=$JAVA_7_HOME'

然后在终端下使用jdk7或者jdk8来切换环境

驱动下载

按照对应的细分版本下载驱动
细分版本
驱动
下面是具体下载内容

执行编译

lunch选择angler,执行编译,待编译完成

刷机

1
2
3
4
5
6
# 手机连接电脑情况下
adb reboot bootloader
# 进入源码编译输出的目录
fastboot flashing unlock
fastboot flashall -w
fastboot reboot

刷机过程

结果

虽然最后刷入userdata失败,但是不影响运行,系统成功刷入。
刷入效果

问题

Git下载内容过大

1
git config --global http.postBuffer 524288000

Android6.0.1修改build/core/combo/mac_version.mk

1
mac_sdk_versions_supported :=  10.6 10.7 10.8 10.9

改为

1
mac_sdk_versions_supported :=  10.6 10.7 10.8 10.9 10.11
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×